package com.hhwy.framework.util;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <b>类 名 称：</b>FileHelper<br/>
 * <b>类 描 述：</b><br/>
 * <b>创 建 人：</b>liuhai<br/>
 * <b>修 改 人：</b>liuhai<br/>
 * <b>修改时间：</b>2016年9月18日 下午3:51:13<br/>
 * <b>修改备注：</b><br/>
 * @version 1.0.0<br/>
 */
public class FileHelper {

	public static final Logger log = LoggerFactory.getLogger(FileHelper.class);
	
	public static final String KEY_FILES = "files";
	public static final String KEY_FILE_NAMES = "fileNames";

	private List<File> files = new ArrayList<>();
	private List<String> fileNames = new ArrayList<>();

	/**
	 * getFileList(递归获取指定目录下的指定扩展名或名称（模糊名称）的文件)<br/>
	 * @param dirPath：搜索目录
	 * @param ending：搜索的目标文件名称的结尾部分
	 * @return 返回{files:文件列表,fileNames:文件名列表}
	 * @exception 
	 * @since  1.0.0
	 */
	public Map<String, List<?>> getFileList(String dirPath, String ending) {
		File dir = new File(dirPath);
		File[] fileArray = dir.listFiles(); // 该文件目录下文件全部放入数组
		if (fileArray != null) {
			for (int i = 0; i < fileArray.length; i++) {
				String fileName = fileArray[i].getName();
				if (fileArray[i].isDirectory()) { // 判断是文件还是文件夹
					getFileList(fileArray[i].getAbsolutePath(), ending); // 获取文件绝对路径
				} else {
					if (StringUtils.isNotBlank(ending)) { // 判断文件名是否以.java结尾
						if (fileName.endsWith(ending)) {
							files.add(fileArray[i]);
							fileNames.add(fileArray[i].getAbsolutePath());
						}
					} else {
						files.add(fileArray[i]);
						fileNames.add(fileArray[i].getAbsolutePath());
					}
				}
			}

		}
		return new HashMap<String, List<?>>() {
			private static final long serialVersionUID = 1L;

			{
				{
					put(KEY_FILES, files);
					put(KEY_FILE_NAMES, fileNames);
				}
				;
			}
		};
	}
}